/*
 * Copyright (C) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package pl.droidsonroids.gif.gifsample.opengl;

import ohos.agp.render.opengl.GLES20;

import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;

/**
 * Utils
 */
public class Utils {
    private static final int FOUR = 4;

    private Utils() {
        /* Do nothing */
    }

    /**
     * loadShader
     *
     * @param shaderType int
     * @param source String
     * @return shader int
     * */
    public static int loadShader(int shaderType, String source) {
        String[] strings = {source};
        int shader = GLES20.glCreateShader(shaderType);
        GLES20.glShaderSource(shader, 1, strings, IntBuffer.allocate(source.length()));
        GLES20.glCompileShader(shader);
        return shader;
    }

    /**
     * toFloatBuffer
     *
     * @param toFloatBuffer float[]
     * @return buffer Buffer
     * */
    public static Buffer toFloatBuffer(float[] toFloatBuffer) {
        Buffer buffer = ByteBuffer.allocateDirect(toFloatBuffer.length * FOUR).order(ByteOrder.nativeOrder())
                .asFloatBuffer().put(toFloatBuffer).rewind();
        return buffer;
    }
}

